package com.hoshiicloud.common.constant;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 主订单状态枚举
 *
 * @author Markerccc
 * @date 2019/8/6 - 14:48
 */
@AllArgsConstructor
public enum OrderMainStatusEnum {

    /**
     * 待付款
     */
    WAIT_PAYING(0, "等待买家付款"),

    /**
     * 订单取消 (超时未付款, 买家, 商家) 没有付钱订单取消
     */
    ORDER_CANCELLATION(1, "订单取消"),
    /**
     * 等待商家发货
     */
    WAIT_SENDING_GOODS(2, "等待商家发货"),
    /**
     * 等待买家收货
     */
    WAIT_RECEIVED_GOODS(3, "等待买家收货"),
    /**
     * 备货中
     */
    PREPARE_GOODS(4, "备货中"),
    /**
     * 等待买家提货
     */
    WAIT_EXTRACT(5, "等待买家提货"),
    /**
     * 等待商家配送
     */
    WAIT_DISTRIBUTION(6, "等待商家配送"),
    /**
     * 配送中
     */
    DISTRIBUTION(7, "配送中"),
    /**
     * 订单关闭
     */
    ORDER_CLOSED(8, "订单关闭"),
    /**
     * 交易成功
     */
    SUCCESSFUL_DEAL(9, "交易成功");

    /**
     * 状态码
     */
    @Getter
    private Integer code;

    /**
     * 意义
     */
    @Getter
    private String name;

    /**
     * 根据code获取枚举
     *
     * @param code code
     * @return OrderMainStatusEnum
     */
    public static OrderMainStatusEnum getByCode(Integer code) {
        for (OrderMainStatusEnum value : values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        return null;
    }

    /**
     * 根据name获取枚举
     *
     * @param name name
     * @return OrderMainStatusEnum
     */
    public static OrderMainStatusEnum getByName(String name) {
        for (OrderMainStatusEnum value : values()) {
            if (value.getName().equals(name)) {
                return value;
            }
        }
        return null;
    }
}
